Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / Sideband.git / files / sbapp / ui / objectdetails.py

Displaying Raw • Download


sbapp/ui/objectdetails.py 2.0.1 (486a97e4) Text, 66.67 KB

T8b949e# Copyright (c) 2026 Mark Qvist - See LICENSE.md and README.md

Tff7b72import T7ee787time
Tff7b72import T7ee787RNS

Tff7b72from T7ee787kivyT7ee787.T7ee787metrics Tff7b72import Te6edf3dpTb4b4b4,Te6edf3sp
Tff7b72from T7ee787kivyT7ee787.T7ee787langT7ee787.T7ee787builder Tff7b72import Te6edf3Builder
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787clipboard Tff7b72import Te6edf3Clipboard
Tff7b72from T7ee787kivyT7ee787.T7ee787utils Tff7b72import Te6edf3escape_markup
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787recycleview Tff7b72import Te6edf3MDRecycleView
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787list Tff7b72import Te6edf3OneLineIconListItem
Tff7b72from T7ee787kivyT7ee787.T7ee787properties Tff7b72import Te6edf3StringPropertyTb4b4b4, Te6edf3BooleanProperty
Tff7b72from T7ee787kivyT7ee787.T7ee787effectsT7ee787.T7ee787scroll Tff7b72import Te6edf3ScrollEffect
Tff7b72from T7ee787kivyT7ee787.T7ee787clock Tff7b72import Te6edf3Clock
Tff7b72from T7ee787sidebandT7ee787.T7ee787sense Tff7b72import Te6edf3Telemeter
Tff7b72from T7ee787sidebandT7ee787.T7ee787geo Tff7b72import Te6edf3aamsl_to_altitude
Tff7b72import T7ee787threading
Tff7b72import T7ee787webbrowser

Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787button Tff7b72import Te6edf3MDRectangleFlatButton
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787dialog Tff7b72import Te6edf3MDDialog
Tff7b72from T7ee787kivymdT7ee787.T7ee787toast Tff7b72import Te6edf3toast

Tff7b72from T7ee787datetime Tff7b72import Te6edf3datetime

Tff7b72from T7ee787kivyT7ee787.T7ee787utils Tff7b72import Te6edf3escape_markup
Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffget_platformTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4:
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3multilingual_markup
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3multilingual_markup

Tff7b72if Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffget_platformTb4b4b4(Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffandroidTa5d6ff"Tb4b4b4:
Tff7b72from T7ee787uiT7ee787.T7ee787helpers Tff7b72import Te6edf3ts_format
Tff7b72elseTb4b4b4:
Tff7b72from T7ee787.T7ee787helpers Tff7b72import Te6edf3ts_format

Tff7b72class T56d364ObjectDetailsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3object_hash Tff7b72= Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffobject_hash Tff7b72= Te6edf3object_hash
Tff7b72selfTff7b72.Td2a8ffcurrent_appearance Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fflatest_timestamp Tff7b72= T79c0ff0
Tff7b72selfTff7b72.Td2a8ffcoords Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffraw_telemetry Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fffrom_telemetry Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fffrom_conv Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fffrom_objects Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8fffrom_convs Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffviewing_self Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffviewing_interface Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffinterface_lat Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_lon Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffdelete_dialog Tff7b72= Tff7b72None

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffhas_screenTb4b4b4(Ta5d6ff"Ta5d6ffobject_details_screenTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreen Tff7b72= Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3layout_object_detailsTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffapp Tff7b72= Tff7b72selfTff7b72.Td2a8ffapp
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8ffids Tff7b72= Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffids
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffscreenTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffobject_details_containerTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect
Tff7b72selfTff7b72.Td2a8fftelemetry_list Tff7b72= Te6edf3RVDetailsTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffdelegate Tff7b72= Tff7b72self
Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffapp Tff7b72= Tff7b72selfTff7b72.Td2a8ffapp
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffobject_details_containerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8fftelemetry_listTb4b4b4)

Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttons Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftracking_buttons Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_buttons Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_request_buttonsTff7b72.Td2a8ff_target_meta Tff7b72= Ta5d6ff"Ta5d6fftelemetry_request_buttonsTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftracking_buttonsTff7b72.Td2a8ff_target_meta Tff7b72= Ta5d6ff"Ta5d6fftracking_buttonsTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffinterface_buttonsTff7b72.Td2a8ff_target_meta Tff7b72= Ta5d6ff"Ta5d6ffinterface_buttonsTa5d6ff"
Tff7b72for Te6edf3w Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72if Tffa657hasattrTb4b4b4(Te6edf3wTb4b4b4, Ta5d6ff"Ta5d6ff_target_metaTa5d6ff"Tb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3wTff7b72.Td2a8ff_target_meta Tff7b72== Ta5d6ff"Ta5d6fftelemetry_request_buttonsTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttons Tff7b72= Te6edf3w
Tff7b72elif Te6edf3wTff7b72.Td2a8ff_target_meta Tff7b72== Ta5d6ff"Ta5d6fftracking_buttonsTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8fftracking_buttons Tff7b72= Te6edf3w
Tff7b72elif Te6edf3wTff7b72.Td2a8ff_target_meta Tff7b72== Ta5d6ff"Ta5d6ffinterface_buttonsTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffinterface_buttons Tff7b72= Te6edf3w

Te6edf3ok_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffOKTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinfo_dialog Tff7b72= Te6edf3MDDialogTb4b4b4(Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffInfoTa5d6ff"Tb4b4b4, Te6edf3textTff7b72=Ta5d6ff"Ta5d6ff"Tb4b4b4, Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3ok_button Tb4b4b4]Tb4b4b4)

Tff7b72def Td2a8ffdl_okTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Te6edf3ok_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_okTb4b4b4)

Te6edf3ClockTff7b72.Td2a8ffschedule_intervalTb4b4b4(Tff7b72selfTff7b72.Td2a8ffreload_jobTb4b4b4, T79c0ff2Tb4b4b4)

Tff7b72def Td2a8ffreload_jobTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dtTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrootTff7b72.Td2a8ffidsTff7b72.Td2a8ffscreen_managerTff7b72.Td2a8ffcurrent Tff7b72== Ta5d6ff"Ta5d6ffobject_details_screenTa5d6ff"Tb4b4b4:
Te6edf3latest_telemetry Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_telemetryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4, Te6edf3limitTff7b72=T79c0ff1Tb4b4b4)
Tff7b72if Te6edf3latest_telemetry Tff7b72!= Tff7b72None Tff7b72and Tffa657lenTb4b4b4(Te6edf3latest_telemetryTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3telemetry_timestamp Tff7b72= Te6edf3latest_telemetryTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72if Te6edf3telemetry_timestamp Tff7b72> Tff7b72selfTff7b72.Td2a8fflatest_timestampTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffreload_telemetryTb4b4b4(Te6edf3notoastTff7b72=Tff7b72TrueTb4b4b4)

Tff7b72def Td2a8ffclose_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fffrom_telemetryTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8fftelemetry_actionTb4b4b4(Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fffrom_convTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffopen_conversationTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4, Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)
Tff7b72elif Tff7b72selfTff7b72.Td2a8fffrom_convsTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconversations_actionTb4b4b4(Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)
Tff7b72elif Tff7b72selfTff7b72.Td2a8fffrom_objectsTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffobjects_actionTb4b4b4(Te6edf3directionTff7b72=Ta5d6ff"Ta5d6ffrightTa5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffclose_sub_map_actionTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffconfirm_delete_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffclear_telemetryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)

Tff7b72def Td2a8ffdelete_telemetry_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdelete_dialog Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3yes_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffYesTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4, Te6edf3theme_text_colorTff7b72=Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4, Te6edf3line_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffcolor_rejectTb4b4b4, Te6edf3text_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffcolor_rejectTb4b4b4)
Te6edf3no_button Tff7b72= Te6edf3MDRectangleFlatButtonTb4b4b4(Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffNoTa5d6ff"Tb4b4b4,Te6edf3font_sizeTff7b72=Te6edf3dpTb4b4b4(T79c0ff18Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelete_dialog Tff7b72= Te6edf3MDDialogTb4b4b4(Te6edf3titleTff7b72=Ta5d6ff"Ta5d6ffClear telemetry?Ta5d6ff"Tb4b4b4, Te6edf3buttonsTff7b72=Tb4b4b4[ Te6edf3yes_buttonTb4b4b4, Te6edf3no_button Tb4b4b4]Tb4b4b4,
Te6edf3textTff7b72=Ta5d6ff"Ta5d6ffThis will permanently delete all collected telemetry for this object.Ta5d6ff"Tb4b4b4)
Tff7b72def Td2a8ffdl_yesTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelete_dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfirm_delete_telemetryTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffcbTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffreload_telemetryTb4b4b4(Te6edf3notoastTff7b72=Tff7b72TrueTb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3cbTb4b4b4, T79c0ff0.2Tb4b4b4)

Tff7b72def Td2a8ffdl_noTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelete_dialogTff7b72.Td2a8ffdismissTb4b4b4(Tb4b4b4)

Te6edf3yes_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_yesTb4b4b4)
Te6edf3no_buttonTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_releaseTff7b72=Te6edf3dl_noTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelete_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffreload_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3notoastTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffobject_hash Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffset_sourceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4, Te6edf3from_convTff7b72=Tff7b72selfTff7b72.Td2a8fffrom_convTb4b4b4, Te6edf3from_convsTff7b72=Tff7b72selfTff7b72.Td2a8fffrom_convsTb4b4b4, Te6edf3from_objectsTff7b72=Tff7b72selfTff7b72.Td2a8fffrom_objectsTb4b4b4, Te6edf3from_telemetryTff7b72=Tff7b72selfTff7b72.Td2a8fffrom_telemetryTb4b4b4)
Tff7b72if Tff7b72not Te6edf3notoastTb4b4b4: Te6edf3toastTb4b4b4(Ta5d6ff"Ta5d6ffReloaded telemetry for objectTa5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffuse_interface_actionTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_windowsTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3cp Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3cp Tff7b72= Tffa657strTb4b4b4(Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffconfigpathTff7b72.Td2a8ffreplaceTb4b4b4(Ta5d6ff"Ta5d6ff/Ta5d6ff"Tb4b4b4, Ta5d6ff"Tffea00\\Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffInterface ConfigurationTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffOn desktop operating systems, interface configuration is handled by Reticulum. To use this interface, copy the configuration to your Reticulum configuration file located at:Tffea00\nTffea00\nTffd700{Te6edf3cpTffd700}Tffea00\nTffea00\nTa5d6ffOn Android, interfaces can be configured directly with this button.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffviewing_interface Tff7b72or Tff7b72not Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4: Tff7b72return
Tff7b72elseTb4b4b4:
Te6edf3success Tff7b72= Tff7b72False
Te6edf3r_str Tff7b72= Ta5d6fffTa5d6ff"Tffea00\nTffea00\nTa5d6ffReticulum is restarting, and the new interface should be available shortly.Ta5d6ff"
Te6edf3if_type Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6fftypeTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_data Tff7b72else Ta5d6ff"Ta5d6ffunknown interfaceTa5d6ff"
Te6edf3if_name Tff7b72= Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6ffnameTa5d6ff" Tff7b72in Tff7b72selfTff7b72.Td2a8ffinterface_data Tff7b72and Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4] Tff7b72else Ta5d6fffTa5d6ff"Ta5d6ffdiscovered Tffd700{Te6edf3if_typeTffd700}Ta5d6ff"
Tff7b72if Te6edf3if_type Tff7b72== Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffuse_interfaceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffInterface ConfiguredTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffRNode parameters configured to use [b]Tffd700{Te6edf3if_nameTffd700}Ta5d6ff[/b]Tffd700{Te6edf3r_strTffd700}Ta5d6ff"
Te6edf3success Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffConfiguration ErrorTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffThe configuration parameters were not valid.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72elif Te6edf3if_type Tff7b72== Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff" Tff7b72or Te6edf3if_type Tff7b72== Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffuse_interfaceTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffInterface ConfiguredTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffTCP connection parameters configured to use [b]Tffd700{Te6edf3if_nameTffd700}Ta5d6ff[/b]Tffd700{Te6edf3r_strTffd700}Ta5d6ff"
Te6edf3success Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffConfiguration ErrorTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffThe configuration parameters were not valid.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Te6edf3if_typeTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffInvalid InterfaceTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffThe announced interface data is invalid. Cannot use for auto-configuration.Ta5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Ta5d6ff"Ta5d6ffUnsupported InterfaceTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffThe interface type Tffd700{Te6edf3if_typeTffd700}Ta5d6ff is not supported for auto-configuration.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72if Te6edf3successTb4b4b4:
Tff7b72def Td2a8ffcbTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffrestart_service_actionTb4b4b4(Tb4b4b4)
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3cbTb4b4b4, T79c0ff1.0Tb4b4b4)

Tff7b72def Td2a8ffget_interface_dataTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3discovery_hashTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3discovery_hash Tff7b72in Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fftelemetry_interfacesTb4b4b4:
Te6edf3telemetry_iface Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fftelemetry_interfacesTb4b4b4[Te6edf3discovery_hashTb4b4b4]
Tff7b72elseTb4b4b4: Te6edf3telemetry_iface Tff7b72= Tff7b72None
Tff7b72if Tff7b72not Te6edf3telemetry_ifaceTb4b4b4:
Te6edf3ifs Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8fflist_discovered_interfacesTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3ifsTb4b4b4: Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72None
Te6edf3if_map Tff7b72= Tb4b4b4{Te6edf3eTb4b4b4[Ta5d6ff"Ta5d6ffdiscovery_hashTa5d6ff"Tb4b4b4]Tb4b4b4: Te6edf3e Tff7b72for Te6edf3e Tff7b72in Te6edf3ifsTb4b4b4}
Tff7b72elseTb4b4b4: Te6edf3if_map Tff7b72= Tb4b4b4{Tb4b4b4}

Tff7b72if Tff7b72not Te6edf3discovery_hash Tff7b72in Te6edf3if_map Tff7b72and Tff7b72not Te6edf3telemetry_ifaceTb4b4b4: Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72None
Tff7b72elseTb4b4b4:
Te6edf3iface Tff7b72= Te6edf3telemetry_iface Tff7b72or Te6edf3if_mapTb4b4b4[Te6edf3discovery_hashTb4b4b4]
Tff7b72if Tff7b72not Te6edf3ifaceTb4b4b4: Tff7b72return Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72NoneTb4b4b4, Tff7b72None

Te6edf3ts Tff7b72= Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fflast_heardTa5d6ff"Tb4b4b4]
Te6edf3t Tff7b72= Te6edf3TelemeterTb4b4b4(Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6fflatitudeTa5d6ff" Tff7b72in Te6edf3iface Tff7b72and Ta5d6ff"Ta5d6fflongitudeTa5d6ff" Tff7b72in Te6edf3iface Tff7b72and Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fftimeTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffdata Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffutcTa5d6ff"Tb4b4b4:Tffa657intTb4b4b4(Te6edf3tsTb4b4b4)Tb4b4b4}
Te6edf3tTff7b72.Td2a8ffsynthesizeTb4b4b4(Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4)
Te6edf3lat Tff7b72= Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3lon Tff7b72= Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4]
Te6edf3altitude Tff7b72= Te6edf3aamsl_to_altitudeTb4b4b4(Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3latTb4b4b4, Te6edf3lonTb4b4b4) Tff7b72if Ta5d6ff"Ta5d6ffheightTa5d6ff" Tff7b72in Te6edf3iface Tff7b72and Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffheightTa5d6ff"Tb4b4b4] Tff7b72else Tff7b72None
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffset_update_timeTb4b4b4(Te6edf3tsTb4b4b4)
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflatitude Tff7b72= Te6edf3lat
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8fflongitude Tff7b72= Te6edf3lon
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffaltitude Tff7b72= Te6edf3altitude
Te6edf3tTff7b72.Td2a8ffsensorsTb4b4b4[Ta5d6ff"Ta5d6fflocationTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffstale_time Tff7b72= T79c0ff12Tff7b72*T79c0ff60Tff7b72*T79c0ff60

Te6edf3telemetry Tff7b72= Tb4b4b4[Tb4b4b4[Te6edf3tsTb4b4b4, Te6edf3tTff7b72.Td2a8ffpackedTb4b4b4(Tb4b4b4)Tb4b4b4]Tb4b4b4]
Te6edf3if_appearance Tff7b72= Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffif_appearanceTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6ffif_appearanceTa5d6ff" Tff7b72in Te6edf3iface Tff7b72else Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffiface_appearanceTb4b4b4(Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72return Te6edf3telemetryTb4b4b4, Te6edf3ifaceTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4, Te6edf3if_appearanceTb4b4b4, Te6edf3iface

Tff7b72def Td2a8ffset_sourceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3source_destTb4b4b4, Te6edf3from_convTff7b72=Tff7b72FalseTb4b4b4, Te6edf3from_convsTff7b72=Tff7b72FalseTb4b4b4, Te6edf3from_objectsTff7b72=Tff7b72FalseTb4b4b4, Te6edf3from_telemetryTff7b72=Tff7b72FalseTb4b4b4, Te6edf3prefetchedTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffobject_hash Tff7b72= Te6edf3source_dest
Te6edf3own_address Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhash
Te6edf3telemetry_allowed Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffshould_send_telemetryTb4b4b4(Te6edf3source_destTb4b4b4)
Tff7b72if Te6edf3source_dest Tff7b72== Te6edf3own_addressTb4b4b4: Tff7b72selfTff7b72.Td2a8ffviewing_self Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffviewing_self Tff7b72= Tff7b72False

Te6edf3if_name Tff7b72= Tff7b72NoneTb4b4b4; Te6edf3if_appearance Tff7b72= Tff7b72NoneTb4b4b4; Te6edf3if_data Tff7b72= Tff7b72None
Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4) Tff7b72== T79c0ff32Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffviewing_interface Tff7b72= Tff7b72True
Te6edf3prefetchedTb4b4b4, Te6edf3if_nameTb4b4b4, Te6edf3if_appearanceTb4b4b4, Te6edf3if_data Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_interface_dataTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3telemetry_allowed Tff7b72= Tff7b72False
Tff7b72if Tff7b72not Te6edf3if_dataTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffInterface data for Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)Tffd700}Ta5d6ff not foundTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffclose_actionTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72not Ta5d6ff"Ta5d6ffconfig_entryTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72or Tff7b72not Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6ffconfig_entryTa5d6ff"Tb4b4b4]Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfig_entry_from_ifaceTb4b4b4(Te6edf3if_dataTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinterface_lat Tff7b72= Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6fflatitudeTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72else Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_lon Tff7b72= Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6fflongitudeTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72else Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72= Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6ffconfig_entryTa5d6ff"Tb4b4b4] Tff7b72if Ta5d6ff"Ta5d6ffconfig_entryTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72else Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_data Tff7b72= Te6edf3if_data

Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffviewing_interface Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffinterface_lat Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_lon Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8ffinterface_data Tff7b72= Tff7b72None

Tff7b72if Te6edf3from_telemetryTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_telemetry Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffrom_telemetry Tff7b72= Tff7b72False
Tff7b72if Te6edf3from_convTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_conv Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffrom_conv Tff7b72= Tff7b72False
Tff7b72if Te6edf3from_objectsTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_objects Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_objects Tff7b72= Tff7b72False
Tff7b72if Te6edf3from_convsTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_convs Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8fffrom_convs Tff7b72= Tff7b72False

Tff7b72if Tff7b72selfTff7b72.Td2a8ffviewing_interfaceTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffremove_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttonsTb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8fftracking_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffremove_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8fftracking_buttonsTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffinterface_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_buttonsTb4b4b4)

Tff7b72if Te6edf3if_data Tff7b72and Ta5d6ff"Ta5d6fftypeTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4:
Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffuse_interface_buttonTff7b72.Td2a8fficon Tff7b72= Ta5d6ff"Ta5d6ffradio-handheldTa5d6ff"
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffuse_interface_buttonTff7b72.Td2a8fficon Tff7b72= Ta5d6ff"Ta5d6fflan-connectTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffinterface_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffremove_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_buttonsTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8fftelemetry_request_buttonsTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8fftracking_buttons Tff7b72in Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffchildrenTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffdetails_screen_containerTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8fftracking_buttonsTb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffviewing_selfTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffis_trackingTb4b4b4(Te6edf3source_destTb4b4b4)Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffStop Live TrackingTa5d6ff"
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffStart Live TrackingTa5d6ff"

Tff7b72selfTff7b72.Td2a8ffcoords Tff7b72= Tff7b72None
Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffdata Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3pds Tff7b72= Te6edf3if_name Tff7b72or Te6edf3multilingual_markupTb4b4b4(Te6edf3escape_markupTb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3source_destTb4b4b4)Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Te6edf3appearance Tff7b72= Te6edf3if_appearance Tff7b72or Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_appearanceTb4b4b4(Te6edf3source_destTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffcurrent_appearance Tff7b72= Te6edf3appearance
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffname_labelTff7b72.Td2a8fftext Tff7b72= Te6edf3pds

Tff7b72if Te6edf3source_dest Tff7b72== Te6edf3own_addressTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffname_labelTff7b72.Td2a8fftext Tff7b72= Te6edf3pdsTff7b72+Ta5d6ff"Ta5d6ff (this device)Ta5d6ff"
Tff7b72elif Te6edf3source_dest Tff7b72== Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftelemetry_collectorTa5d6ff"Tb4b4b4]Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffname_labelTff7b72.Td2a8fftext Tff7b72= Te6edf3pdsTff7b72+Ta5d6ff"Ta5d6ff (collector)Ta5d6ff"

Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffcoordinates_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffobject_appearanceTff7b72.Td2a8fficon Tff7b72= Te6edf3appearanceTb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffobject_appearanceTff7b72.Td2a8fficon_color Tff7b72= Te6edf3appearanceTb4b4b4[T79c0ff1Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffobject_appearanceTff7b72.Td2a8ffmd_bg_color Tff7b72= Te6edf3appearanceTb4b4b4[T79c0ff2Tb4b4b4]
Tff7b72def Td2a8ffdjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffviewing_interfaceTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrequest_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffsend_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffCopy ConfigTa5d6ff"
Tff7b72elif Tff7b72selfTff7b72.Td2a8ffviewing_selfTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrequest_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffsend_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffCopy TelemetryTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffrequest_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffCopy TelemetryTa5d6ff"
Tff7b72if Te6edf3telemetry_allowedTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffsend_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Tff7b72elseTb4b4b4: Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffsend_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True

Tff7b72if Te6edf3prefetched Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3latest_telemetry Tff7b72= Te6edf3prefetched
Tff7b72elseTb4b4b4: Te6edf3latest_telemetry Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_telemetryTb4b4b4(Te6edf3source_destTb4b4b4, Te6edf3limitTff7b72=T79c0ff1Tb4b4b4)

Tff7b72if Te6edf3latest_telemetry Tff7b72!= Tff7b72None Tff7b72and Tffa657lenTb4b4b4(Te6edf3latest_telemetryTb4b4b4) Tff7b72> T79c0ff0Tb4b4b4:
Te6edf3telemetry_timestamp Tff7b72= Te6edf3latest_telemetryTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff0Tb4b4b4]
Tff7b72selfTff7b72.Td2a8fflatest_timestamp Tff7b72= Te6edf3telemetry_timestamp

Te6edf3telemeter Tff7b72= Te6edf3TelemeterTff7b72.Td2a8fffrom_packedTb4b4b4(Te6edf3latest_telemetryTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffraw_telemetry Tff7b72= Te6edf3telemeterTff7b72.Td2a8ffread_allTb4b4b4(Tb4b4b4)

Te6edf3relative_to Tff7b72= Tff7b72None
Tff7b72if Te6edf3source_dest Tff7b72!= Te6edf3own_addressTb4b4b4:
Te6edf3relative_to Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fftelemeter

Te6edf3rendered_telemetry Tff7b72= Te6edf3telemeterTff7b72.Td2a8ffrenderTb4b4b4(Te6edf3relative_toTff7b72=Te6edf3relative_toTb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6fflocationTa5d6ff" Tff7b72in Te6edf3telemeterTff7b72.Td2a8ffsensorsTb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8ffcoordinates_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.01Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffupdate_sourceTb4b4b4(Te6edf3rendered_telemetryTb4b4b4, Te6edf3if_dataTff7b72=Te6edf3if_dataTb4b4b4, Te6edf3if_appearanceTff7b72=Te6edf3if_appearanceTb4b4b4)
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72False
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.01Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffjobTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftelemetry_buttonTff7b72.Td2a8ffdisabled Tff7b72= Tff7b72True
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3jobTb4b4b4, T79c0ff0.01Tb4b4b4)
Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffupdate_sourceTb4b4b4(Tff7b72NoneTb4b4b4)

Tff7b72selfTff7b72.Td2a8fftelemetry_listTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3ScrollEffect
Te6edf3ClockTff7b72.Td2a8ffschedule_onceTb4b4b4(Te6edf3djobTb4b4b4, T79c0ff0.1Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72import T7ee787traceback
Te6edf3exception_info Tff7b72= Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3tracebackTff7b72.Td2a8ffTracebackExceptionTff7b72.Td2a8fffrom_exceptionTb4b4b4(Te6edf3eTb4b4b4)Tff7b72.Td2a8ffformatTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAn Tffd700{Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff occurred while updating service telemetry: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Te6edf3exception_infoTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)

Tff7b72def Td2a8ffreloadTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffclear_widgetTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdateTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8fflive_trackingTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffviewing_selfTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffis_trackingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffstart_trackingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4, Te6edf3intervalTff7b72=T79c0ff59Tb4b4b4, Te6edf3durationTff7b72=T79c0ff7Tff7b72*T79c0ff24Tff7b72*T79c0ff60Tff7b72*T79c0ff60Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffStop Live TrackingTa5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffstop_trackingTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffscreenTff7b72.Td2a8ffidsTff7b72.Td2a8fftrack_buttonTff7b72.Td2a8fftext Tff7b72= Ta5d6ff"Ta5d6ffStart Live TrackingTa5d6ff"

Tff7b72def Td2a8ffsend_updateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffviewing_selfTb4b4b4:
Te6edf3result Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffsend_latest_telemetryTb4b4b4(Te6edf3to_addrTff7b72=Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)
Tff7b72if Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffdestination_unknownTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffUnknown DestinationTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffNo keys known for the destination. Connected reticules have been queried for the keys.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffin_progressTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffTransfer In ProgressTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffThere is already an outbound telemetry transfer in progress for this peer.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffalready_sentTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffAlready DeliveredTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffThe current telemetry data was already sent and delivered to the peer or propagation network.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffUpdate SentTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffA telemetry update was sent to the peer.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffnot_sentTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffNot SentTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffA telemetry update could not be sent.Ta5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffUnknown StatusTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffThe status of the telemetry update is unknown.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Te6edf3title_str
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Te6edf3info_str
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffrequest_updateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffviewing_selfTb4b4b4:
Te6edf3result Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffrequest_latest_telemetryTb4b4b4(Te6edf3from_addrTff7b72=Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)

Tff7b72if Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffdestination_unknownTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffUnknown DestinationTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffNo keys known for the destination. Connected reticules have been queried for the keys.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffin_progressTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffTransfer In ProgressTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffThere is already a telemetry request transfer in progress for this peer.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffsentTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffRequest SentTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffA telemetry request was sent to the peer. The peer should send any available telemetry shortly.Ta5d6ff"
Tff7b72elif Te6edf3result Tff7b72== Ta5d6ff"Ta5d6ffnot_sentTa5d6ff"Tb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffNot SentTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffA telemetry request could not be sent.Ta5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3title_str Tff7b72= Ta5d6ff"Ta5d6ffUnknown StatusTa5d6ff"
Te6edf3info_str Tff7b72= Ta5d6ff"Ta5d6ffThe status of the telemetry request is unknown.Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftitle Tff7b72= Te6edf3title_str
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8fftext Tff7b72= Te6edf3info_str
Tff7b72selfTff7b72.Td2a8ffinfo_dialogTff7b72.Td2a8ffopenTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffclear_widgetTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72pass

Tff7b72def Td2a8ffupdateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3us Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_widgetTb4b4b4(Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffUpdated object details in Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3usTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_DEBUGTb4b4b4)

Tff7b72def Td2a8ffupdate_widgetTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72== Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3MDLabelTb4b4b4(Te6edf3textTff7b72=Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Tff7b72selfTff7b72.Td2a8ffobject_hashTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffget_widgetTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffwidget

Tff7b72def Td2a8ffcopy_coordinatesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffcoords Tff7b72or Ta5d6ff"Ta5d6ffNo dataTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffcopy_telemetryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffviewing_interfaceTb4b4b4: Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffraw_telemetry Tff7b72or Ta5d6ff"Ta5d6ffNo dataTa5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72elseTb4b4b4: Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Tffa657strTb4b4b4(Tff7b72selfTff7b72.Td2a8ffinterface_config Tff7b72or Ta5d6ff"Ta5d6ffNo dataTa5d6ff"Tb4b4b4)Tb4b4b4)

Tff7b72class T56d364ODViewTb4b4b4(Te6edf3OneLineIconListItemTb4b4b4)Tb4b4b4:
Te6edf3icon Tff7b72= Te6edf3StringPropertyTb4b4b4(Tb4b4b4)
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tb4b4b4)

Tff7b72class T56d364RVDetailsTb4b4b4(Te6edf3MDRecycleViewTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdata Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72def Td2a8ffupdate_sourceTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3rendered_telemetryTff7b72=Tff7b72NoneTb4b4b4, Te6edf3if_dataTff7b72=Tff7b72NoneTb4b4b4, Te6edf3if_appearanceTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72not Te6edf3rendered_telemetryTb4b4b4:
Te6edf3rendered_telemetry Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3sort Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffInformationTa5d6ff"Tb4b4b4: T79c0ff5Tb4b4b4,
Ta5d6ff"Ta5d6ffTimestampTa5d6ff"Tb4b4b4: T79c0ff7Tb4b4b4,
Ta5d6ff"Ta5d6ffReceivedTa5d6ff"Tb4b4b4: T79c0ff9Tb4b4b4,
Ta5d6ff"Ta5d6ffPhysical LinkTa5d6ff"Tb4b4b4: T79c0ff10Tb4b4b4,
Ta5d6ff"Ta5d6ffInterfacesTa5d6ff"Tb4b4b4: T79c0ff15Tb4b4b4,
Ta5d6ff"Ta5d6ffLocationTa5d6ff"Tb4b4b4: T79c0ff20Tb4b4b4,
Ta5d6ff"Ta5d6ffAmbient LightTa5d6ff"Tb4b4b4: T79c0ff30Tb4b4b4,
Ta5d6ff"Ta5d6ffAmbient TemperatureTa5d6ff"Tb4b4b4: T79c0ff40Tb4b4b4,
Ta5d6ff"Ta5d6ffRelative HumidityTa5d6ff"Tb4b4b4: T79c0ff50Tb4b4b4,
Ta5d6ff"Ta5d6ffAmbient PressureTa5d6ff"Tb4b4b4: T79c0ff60Tb4b4b4,
Ta5d6ff"Ta5d6ffMagnetic FieldTa5d6ff"Tb4b4b4: T79c0ff61Tb4b4b4,
Ta5d6ff"Ta5d6ffGravityTa5d6ff"Tb4b4b4: T79c0ff62Tb4b4b4,
Ta5d6ff"Ta5d6ffAngular VelocityTa5d6ff"Tb4b4b4: T79c0ff63Tb4b4b4,
Ta5d6ff"Ta5d6ffAccelerationTa5d6ff"Tb4b4b4: T79c0ff64Tb4b4b4,
Ta5d6ff"Ta5d6ffProximityTa5d6ff"Tb4b4b4: T79c0ff65Tb4b4b4,
Ta5d6ff"Ta5d6ffBatteryTa5d6ff"Tb4b4b4: T79c0ff70Tb4b4b4,
Ta5d6ff"Ta5d6ffProcessorTa5d6ff"Tb4b4b4: T79c0ff72Tb4b4b4,
Ta5d6ff"Ta5d6ffRandom Access MemoryTa5d6ff"Tb4b4b4: T79c0ff74Tb4b4b4,
Ta5d6ff"Ta5d6ffNon-Volatile MemoryTa5d6ff"Tb4b4b4: T79c0ff76Tb4b4b4,
Ta5d6ff"Ta5d6ffPower ConsumptionTa5d6ff"Tb4b4b4: T79c0ff80Tb4b4b4,
Ta5d6ff"Ta5d6ffPower ProductionTa5d6ff"Tb4b4b4: T79c0ff81Tb4b4b4,
Ta5d6ff"Ta5d6ffTankTa5d6ff"Tb4b4b4: T79c0ff90Tb4b4b4,
Ta5d6ff"Ta5d6ffFuelTa5d6ff"Tb4b4b4: T79c0ff91Tb4b4b4,
Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4: T79c0ff100Tb4b4b4,
Tb4b4b4}
Tff7b72def Td2a8ffpass_jobTb4b4b4(Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4: Tff7b72pass

Tff7b72selfTff7b72.Td2a8ffentries Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_interfaceTb4b4b4:
Te6edf3unset Tff7b72= Tb4b4b4[Tb4b4b4]
Tff7b72for Te6edf3k Tff7b72in Te6edf3if_dataTb4b4b4:
Tff7b72if Te6edf3if_dataTb4b4b4[Te6edf3kTb4b4b4] Tff7b72== Tff7b72NoneTb4b4b4: Te6edf3unsetTff7b72.Td2a8ffappendTb4b4b4(Te6edf3kTb4b4b4)
Tff7b72for Te6edf3k Tff7b72in Te6edf3unsetTb4b4b4: Te6edf3if_dataTff7b72.Td2a8ffpopTb4b4b4(Te6edf3kTb4b4b4)

Te6edf3if_type Tff7b72= Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]
Te6edf3sc_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffstatusTa5d6ff'Tb4b4b4] Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffstatusTa5d6ff'Tb4b4b4] Tff7b72!= Ta5d6ff'Ta5d6ffunknownTa5d6ff' Tff7b72else Ta5d6ff'Ta5d6ffavailability unknownTa5d6ff'Tffd700}Ta5d6ff" Tff7b72if Ta5d6ff"Ta5d6ffstatusTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72and Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4] Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3tid_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, ID [b]<Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6fftransport_idTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff>[/b]Ta5d6ff" Tff7b72if Ta5d6ff"Ta5d6fftransport_idTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3tcp_reachable Tff7b72= Ta5d6ff"Ta5d6ffreachable_onTa5d6ff" Tff7b72in Te6edf3if_data Tff7b72and Ta5d6ff"Ta5d6ffportTa5d6ff" Tff7b72in Te6edf3if_data
Te6edf3i2p_reachable Tff7b72= Te6edf3if_type Tff7b72== Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff" Tff7b72and Ta5d6ff"Ta5d6ffreachable_onTa5d6ff" Tff7b72in Te6edf3if_data

T8b949e# if "discovery_hash" in if_data: self.entries.append({"icon": "key-link", "text": f"[b]{RNS.prettyhexrep(if_data['discovery_hash'])}[/b]"})
T8b949e# if "transport_id" in if_data: self.entries.append({"icon": "key-link", "text": f"Transport ID [b]<{if_data['transport_id']}>[/b]"})
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3if_appearanceTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffDiscovered [b]Tffd700{Te6edf3if_typeTffd700}Ta5d6ff[/b]Tffd700{Te6edf3sc_strTffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6fftransportTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftransit-connection-variantTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffTransport [b]Tffd700{Ta5d6ff'Ta5d6ffenabledTa5d6ff' Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6fftransportTa5d6ff'Tb4b4b4] Tff7b72else Ta5d6ff'Ta5d6ffdisabledTa5d6ff'Tffd700}Ta5d6ff[/b]Tffd700{Te6edf3tid_str Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6fftransportTa5d6ff'Tb4b4b4] Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffnetwork_idTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffkey-linkTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffNetwork ID [b]<Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffnetwork_idTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff>[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4) Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6ffnetwork_idTa5d6ff"Tb4b4b4] Tff7b72!= Te6edf3if_dataTb4b4b4[Ta5d6ff"Ta5d6fftransport_idTa5d6ff"Tb4b4b4] Tff7b72else Tff7b72None
Tff7b72if Ta5d6ff"Ta5d6ffdiscoveredTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffclock-check-outlineTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffFirst heard [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffdiscoveredTa5d6ff'Tb4b4b4]Tb4b4b4, Te6edf3compactTff7b72=Tff7b72TrueTb4b4b4)Tffd700}Ta5d6ff[/b] agoTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3tcp_reachableTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffconnectionTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffReachable on [b]Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffreachable_onTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff:Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffportTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3i2p_reachableTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffconnectionTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffI2P B32 [b]Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffreachable_onTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6fffrequencyTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffsine-waveTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffFrequency [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6fffrequencyTa5d6ff'Tb4b4b4]Tb4b4b4, Te6edf3dTff7b72=T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffbandwidthTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffarrow-expand-horizontalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffBandwidth [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffbandwidthTa5d6ff'Tb4b4b4]Tb4b4b4, Te6edf3dTff7b72=T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffsfTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpollTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ff[b]Spreading Factor Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffsfTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffcrTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffbarcodeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ff[b]Coding Rate Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffcrTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffhopsTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffatom-variantTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffNetwork distance is [b]Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffhopsTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff hopTffd700{Ta5d6ff'Ta5d6ff' Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffhopsTa5d6ff'Tb4b4b4] Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ffsTa5d6ff'Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffvalueTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpostage-stampTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffStamp value [b]Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffvalueTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffheard_countTa5d6ff" Tff7b72in Te6edf3if_dataTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcounterTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ff[b]Heard Tffd700{Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffheard_countTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b] timeTffd700{Ta5d6ff'Ta5d6ff' Tff7b72if Te6edf3if_dataTb4b4b4[Ta5d6ff'Ta5d6ffheard_countTa5d6ff'Tb4b4b4] Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ffsTa5d6ff'Tffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72def Td2a8ffinterface_action_factoryTb4b4b4(Te6edf3discovery_hashTb4b4b4)Tb4b4b4:
Te6edf3oh Tff7b72= Te6edf3discovery_hashTb4b4b4; Te6edf3fc Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8fffrom_convTb4b4b4; Te6edf3fcs Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8fffrom_convs
Te6edf3fo Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8fffrom_objectsTb4b4b4; Te6edf3ft Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8fffrom_telemetry
Tff7b72def Td2a8fffTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3ohTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffset_sourceTb4b4b4(Te6edf3ohTb4b4b4, Te6edf3from_convTff7b72=Te6edf3fcTb4b4b4, Te6edf3from_convsTff7b72=Te6edf3fcsTb4b4b4, Te6edf3from_objectsTff7b72=Te6edf3foTb4b4b4, Te6edf3from_telemetryTff7b72=Te6edf3ftTb4b4b4)
Tff7b72return Te6edf3f

Te6edf3rendered_telemetryTff7b72.Td2a8ffsortTb4b4b4(Te6edf3keyTff7b72=Tff7b72lambda Te6edf3sTb4b4b4: Te6edf3sortTb4b4b4[Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]Tb4b4b4] Tff7b72if Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4] Tff7b72in Te6edf3sort Tff7b72else T79c0ff1000Tb4b4b4)
Tff7b72for Te6edf3s Tff7b72in Te6edf3rendered_telemetryTb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3extra_entries Tff7b72= Tb4b4b4[Tb4b4b4]
Te6edf3release_function Tff7b72= Te6edf3pass_job
Te6edf3formatted_values Tff7b72= Tff7b72None
Te6edf3name Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffnameTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffTimestampTa5d6ff"Tb4b4b4:
Te6edf3ts Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffUTCTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3ts Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3ts_str Tff7b72= Te6edf3datetimeTff7b72.Td2a8fffromtimestampTb4b4b4(Te6edf3tsTb4b4b4)Tff7b72.Td2a8ffstrftimeTb4b4b4(Ta5d6ff"Ta5d6ff%Ta5d6ffY-Ta5d6ff%Ta5d6ffm-Tffd700%dTa5d6ff Ta5d6ff%Ta5d6ffH:Ta5d6ff%Ta5d6ffM:Ta5d6ff%Ta5d6ffSTa5d6ff"Tb4b4b4)
Te6edf3tsdiff Tff7b72= Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3ts
Te6edf3tspec Tff7b72= Ta5d6ff"Ta5d6ffagoTa5d6ff" Tff7b72if Te6edf3tsdiff Tff7b72>Tff7b72= T79c0ff0 Tff7b72else Ta5d6ff"Ta5d6ffin the futureTa5d6ff"
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffRecorded [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Tffa657absTb4b4b4(Te6edf3tsdiffTb4b4b4)Tb4b4b4, Te6edf3compactTff7b72=Tff7b72TrueTb4b4b4)Tffd700}Ta5d6ff Tffd700{Te6edf3tspecTffd700}Ta5d6ff[/b] (Tffd700{Te6edf3ts_strTffd700}Ta5d6ff)Ta5d6ff"
Tff7b72def Td2a8ffcopy_infoTb4b4b4(Te6edf3eTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Te6edf3ts_strTb4b4b4)
Te6edf3toastTb4b4b4(Ta5d6ff"Ta5d6ffCopied to clipboardTa5d6ff"Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3copy_info
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffInformationTa5d6ff"Tb4b4b4:
Te6edf3info Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcontentsTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3info Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3istr Tff7b72= Tffa657strTb4b4b4(Te6edf3infoTb4b4b4)
Tff7b72def Td2a8ffcopy_infoTb4b4b4(Te6edf3eTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3ClipboardTff7b72.Td2a8ffcopyTb4b4b4(Te6edf3istrTb4b4b4)
Te6edf3toastTb4b4b4(Ta5d6ff"Ta5d6ffCopied to clipboardTa5d6ff"Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3copy_info
Te6edf3external_text Tff7b72= Te6edf3multilingual_markupTb4b4b4(Te6edf3escape_markupTb4b4b4(Te6edf3istrTb4b4b4)Tff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)Tff7b72.Td2a8ffdecodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff[b]Information[/b]: Tffd700{Te6edf3external_textTffd700}Ta5d6ff"
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffReceivedTa5d6ff"Tb4b4b4:
Te6edf3formatted_values Tff7b72= Ta5d6ff"Ta5d6ff"
Te6edf3by Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffbyTa5d6ff"Tb4b4b4]Tb4b4b4;
Te6edf3via Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffviaTa5d6ff"Tb4b4b4]Tb4b4b4;

Tff7b72if Te6edf3by Tff7b72== Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhashTb4b4b4:
Tff7b72if Te6edf3via Tff7b72== Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4:
Te6edf3formatted_values Tff7b72= Ta5d6ff"Ta5d6ffCollected directly by [b]this device[/b], directly [b]from emitter[/b]Ta5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3via_str Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3viaTb4b4b4)
Tff7b72if Te6edf3via_str Tff7b72== Tff7b72NoneTb4b4b4:
Te6edf3via_str Tff7b72= Ta5d6ff"Ta5d6ffan [b]unknown peer[/b]Ta5d6ff"
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffCollected directly by [b]this device[/b], via Tffd700{Te6edf3via_strTffd700}Ta5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3via Tff7b72!= Tff7b72None Tff7b72and Te6edf3via Tff7b72== Te6edf3byTb4b4b4:
Te6edf3vstr Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3viaTb4b4b4)
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffReceived from, and collected by [b]Tffd700{Te6edf3vstrTffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elseTb4b4b4:
Tff7b72if Te6edf3via Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3vstr Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3viaTb4b4b4)
Te6edf3via_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffReceived from [b]Tffd700{Te6edf3vstrTffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3via_str Tff7b72= Ta5d6ff"Ta5d6ffReceived from an [b]unknown peer[/b]Ta5d6ff"
Tff7b72if Te6edf3by Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3dstr Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffpeer_display_nameTb4b4b4(Te6edf3byTb4b4b4)
Te6edf3by_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, collected by [b]Tffd700{Te6edf3dstrTffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3by_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, collected by an [b]unknown peer[/b]Ta5d6ff"
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3via_strTffd700}Tffd700{Te6edf3by_strTffd700}Ta5d6ff"

Tff7b72if Te6edf3formatted_values Tff7b72== Ta5d6ff"Ta5d6ff"Tb4b4b4: Te6edf3formatted_values Tff7b72= Tff7b72None
Tff7b72if Tff7b72not Te6edf3by Tff7b72== Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fflxmf_destinationTff7b72.Td2a8ffhash Tff7b72and Tff7b72not Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffis_trustedTb4b4b4(Te6edf3byTb4b4b4)Tb4b4b4:
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffalertTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffCollected by a [b]non-trusted[/b] peerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffBatteryTa5d6ff"Tb4b4b4:
Te6edf3p Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ff_metaTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3t Tff7b72= Tff7b72None
Tff7b72if Ta5d6ff"Ta5d6fftemperatureTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4: Te6edf3t Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fftemperatureTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3t Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3cs_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Tffd700{Te6edf3csTffd700}Ta5d6ff, Tffd700{Te6edf3tTffd700}Ta5d6ff° C)Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3cs_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Tffd700{Te6edf3csTffd700}Ta5d6ff)Ta5d6ff"
Tff7b72if Te6edf3p Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff [b]Tffd700{Te6edf3pTffd700}Ta5d6ff%[/b]Ta5d6ff"Tff7b72+Te6edf3cs_str
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffAmbient PressureTa5d6ff"Tb4b4b4:
Te6edf3p Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmbarTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3p Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff [b]Tffd700{Te6edf3pTffd700}Ta5d6ff mbar[/b]Ta5d6ff"
Te6edf3dt Tff7b72= Ta5d6ff"Ta5d6ffmbarTa5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffdeltasTa5d6ff" Tff7b72in Te6edf3s Tff7b72and Te6edf3dt Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3d Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4]
Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Δ = Tffd700{Te6edf3dTffd700}Ta5d6ff mbar)Ta5d6ff"
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffAmbient TemperatureTa5d6ff"Tb4b4b4:
Te6edf3c Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3c Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff [b]Tffd700{Te6edf3cTffd700}Ta5d6ff° C[/b]Ta5d6ff"
Te6edf3dt Tff7b72= Ta5d6ff"Ta5d6ffcTa5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffdeltasTa5d6ff" Tff7b72in Te6edf3s Tff7b72and Te6edf3dt Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3d Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4]
Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Δ = Tffd700{Te6edf3dTffd700}Ta5d6ff° C)Ta5d6ff"
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffRelative HumidityTa5d6ff"Tb4b4b4:
Te6edf3r Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3r Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff [b]Tffd700{Te6edf3rTffd700}Ta5d6ff%[/b]Ta5d6ff"
Te6edf3dt Tff7b72= Ta5d6ff"Ta5d6ffpercentTa5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffdeltasTa5d6ff" Tff7b72in Te6edf3s Tff7b72and Te6edf3dt Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3d Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4]
Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Δ = Tffd700{Te6edf3dTffd700}Ta5d6ff%)Ta5d6ff"
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffPhysical LinkTa5d6ff"Tb4b4b4:
Te6edf3rssi Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffrssiTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3rssi_str Tff7b72= Tff7b72None
Te6edf3snr Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffsnrTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3snr_str Tff7b72= Tff7b72None
Te6edf3q Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffqTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3q_str Tff7b72= Tff7b72None
Tff7b72if Te6edf3q Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3q_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffLink Quality [b]Tffd700{Te6edf3qTffd700}Ta5d6ff%[/b]Ta5d6ff"
Tff7b72if Te6edf3rssi Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3rssi_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffRSSI [b]Tffd700{Te6edf3rssiTffd700}Ta5d6ff dBm[/b]Ta5d6ff"
Tff7b72if Te6edf3q Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3rssi_str Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"Tff7b72+Te6edf3rssi_str
Tff7b72if Te6edf3snr Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3snr_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffSNR [b]Tffd700{Te6edf3snrTffd700}Ta5d6ff dB[/b]Ta5d6ff"
Tff7b72if Te6edf3q Tff7b72!= Tff7b72None Tff7b72or Te6edf3rssi Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3snr_str Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"Tff7b72+Te6edf3snr_str
Tff7b72if Te6edf3q_str Tff7b72or Te6edf3rssi_str Tff7b72or Te6edf3snr_strTb4b4b4:
Te6edf3formatted_values Tff7b72= Te6edf3q_strTff7b72+Te6edf3rssi_strTff7b72+Te6edf3snr_str
Te6edf3release_function Tff7b72= Te6edf3pass_job
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffPower ConsumptionTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cicon Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcustom_iconTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3watts Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4: Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tff7b72/T79c0ff1e6Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e9Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffnTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tff7b72/T79c0ff1e3Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e6Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffµTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e3Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffmTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e15Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e15Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffETa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e12Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e12Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffTTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e9Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e9Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffGTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e6Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e6Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffMTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e3Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e3Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffKTa5d6ff"
Tff7b72if Te6edf3ciconTb4b4b4: Te6edf3set_icon Tff7b72= Te6edf3cicon
Tff7b72elseTb4b4b4: Te6edf3set_icon Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]
Te6edf3watts Tff7b72= Tffa657roundTb4b4b4(Te6edf3wattsTb4b4b4, T79c0ff2Tb4b4b4)
Te6edf3p_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff [b]Tffd700{Te6edf3wattsTffd700}Ta5d6ff Tffd700{Te6edf3prefixTffd700}Ta5d6ffW[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3set_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3p_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffPower ProductionTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cicon Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcustom_iconTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3watts Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffwTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4: Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tff7b72/T79c0ff1e6Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e9Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffnTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tff7b72/T79c0ff1e3Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e6Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffµTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72< T79c0ff1Tb4b4b4: Te6edf3watts Tff7b72*Tff7b72= T79c0ff1e3Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffmTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e15Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e15Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffETa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e12Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e12Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffTTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e9Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e9Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffGTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e6Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e6Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffMTa5d6ff"
Tff7b72elif Tffa657absTb4b4b4(Te6edf3wattsTb4b4b4) Tff7b72>Tff7b72= T79c0ff1e3Tb4b4b4: Te6edf3watts Tff7b72/Tff7b72= T79c0ff1e3Tb4b4b4; Te6edf3prefix Tff7b72= Ta5d6ff"Ta5d6ffKTa5d6ff"
Tff7b72if Te6edf3ciconTb4b4b4: Te6edf3set_icon Tff7b72= Te6edf3cicon
Tff7b72elseTb4b4b4: Te6edf3set_icon Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]
Te6edf3watts Tff7b72= Tffa657roundTb4b4b4(Te6edf3wattsTb4b4b4, T79c0ff2Tb4b4b4)
Te6edf3p_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff [b]Tffd700{Te6edf3wattsTffd700}Ta5d6ff Tffd700{Te6edf3prefixTffd700}Ta5d6ffW[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3set_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3p_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffCustomTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]
Te6edf3cicon Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcustom_iconTa5d6ff"Tb4b4b4]
Te6edf3value Tff7b72= Tffa657strTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffvalueTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3set_icon Tff7b72= Te6edf3cicon Tff7b72if Te6edf3cicon Tff7b72else Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff [b]Tffd700{Te6edf3valueTffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3set_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffTankTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cicon Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcustom_iconTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3unit Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffunitTa5d6ff"Tb4b4b4]
Te6edf3cap Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcapacityTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; Te6edf3lvl Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflevelTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3free Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fffreeTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3set_icon Tff7b72= Te6edf3cicon Tff7b72if Te6edf3cicon Tff7b72else Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff level is [b]Tffd700{Te6edf3lvlTffd700}Ta5d6ff Tffd700{Te6edf3unitTffd700}Ta5d6ff[/b] ([b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b])Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3set_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffFuelTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cicon Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcustom_iconTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3unit Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffunitTa5d6ff"Tb4b4b4]
Te6edf3cap Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcapacityTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; Te6edf3lvl Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflevelTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3free Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fffreeTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4; Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3set_icon Tff7b72= Te6edf3cicon Tff7b72if Te6edf3cicon Tff7b72else Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff level is [b]Tffd700{Te6edf3lvlTffd700}Ta5d6ff Tffd700{Te6edf3unitTffd700}Ta5d6ff[/b] ([b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b])Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3set_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffProcessorTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3load Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcurrent_loadTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3avgs Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffload_avgsTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3clock Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffclockTa5d6ff"Tb4b4b4]
Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Te6edf3loadTff7b72*T79c0ff100.0Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3avgs_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, averages are [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3avgsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,T79c0ff2Tb4b4b4)Tffd700}Ta5d6ff[/b], [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3avgsTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,T79c0ff2Tb4b4b4)Tffd700}Ta5d6ff[/b], [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3avgsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4,T79c0ff2Tb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff" Tff7b72if Te6edf3avgs Tff7b72!= Tff7b72None Tff7b72and Tffa657lenTb4b4b4(Te6edf3avgsTb4b4b4) Tff7b72== T79c0ff3 Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3clock_str Tff7b72= Ta5d6ff"Ta5d6ff at [b]Ta5d6ff"Tff7b72+Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3clockTb4b4b4)Tff7b72+Ta5d6ff"Ta5d6ff[/b]Ta5d6ff" Tff7b72if Te6edf3clock Tff7b72!= Tff7b72None Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffUsing [b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b] of Tffd700{Te6edf3labelTffd700}Tffd700{Te6edf3clock_strTffd700}Tffd700{Te6edf3avgs_strTffd700}Ta5d6ff"
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff use is [b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b]Tffd700{Te6edf3clock_strTffd700}Tffd700{Te6edf3avgs_strTffd700}Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffNon-Volatile MemoryTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cap Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcapacityTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4; Te6edf3use Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffusedTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3free Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fffreeTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4; Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff use is [b]Tffd700{Te6edf3useTffd700}Ta5d6ff[/b] ([b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b]) of [b]Tffd700{Te6edf3capTffd700}Ta5d6ff[/b], with [b]Tffd700{Te6edf3freeTffd700}Ta5d6ff[/b] freeTa5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffRandom Access MemoryTa5d6ff"Tb4b4b4:
Te6edf3cs Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3cs Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72for Te6edf3c Tff7b72in Te6edf3csTb4b4b4:
Te6edf3label Tff7b72= Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fflabelTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3cap Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffcapacityTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4; Te6edf3use Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffusedTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3free Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6fffreeTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4; Te6edf3pct Tff7b72= Tffa657roundTb4b4b4(Te6edf3cTb4b4b4[Ta5d6ff"Ta5d6ffpercentTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff1Tb4b4b4)
Te6edf3e_text Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3labelTffd700}Ta5d6ff use is [b]Tffd700{Te6edf3useTffd700}Ta5d6ff[/b] ([b]Tffd700{Te6edf3pctTffd700}Ta5d6ff%[/b]) of [b]Tffd700{Te6edf3capTffd700}Ta5d6ff[/b], with [b]Tffd700{Te6edf3freeTffd700}Ta5d6ff[/b] freeTa5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3e_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3pass_job

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffLocationTa5d6ff"Tb4b4b4:
Te6edf3lat Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflatitudeTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3lon Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflongitudeTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3alt Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaltitudeTa5d6ff"Tb4b4b4]
Te6edf3speed Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffspeedTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3heading Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffheadingTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3accuracy Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaccuracyTa5d6ff"Tb4b4b4]
Te6edf3updated Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffupdatedTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3updated_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, logged [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)Tff7b72-Te6edf3updatedTb4b4b4, Te6edf3compactTff7b72=Tff7b72TrueTb4b4b4)Tffd700}Ta5d6ff ago[/b]Ta5d6ff"

Te6edf3coords Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3latTffd700}Ta5d6ff, Tffd700{Te6edf3lonTffd700}Ta5d6ff"Tb4b4b4; Te6edf3fcoords Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Tffa657roundTb4b4b4(Te6edf3latTb4b4b4,T79c0ff4Tb4b4b4)Tffd700}Ta5d6ff, Tffd700{Tffa657roundTb4b4b4(Te6edf3lonTb4b4b4,T79c0ff4Tb4b4b4)Tffd700}Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffcoords Tff7b72= Te6edf3coords
Tff7b72if Te6edf3alt Tff7b72== T79c0ff0Tb4b4b4: Te6edf3alt_str Tff7b72= Ta5d6ff"Ta5d6ff0Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3alt_str Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3altTb4b4b4)
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffCoordinates [b]Tffd700{Te6edf3fcoordsTffd700}Ta5d6ff[/b], altitude [b]Tffd700{Te6edf3alt_strTffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72if Te6edf3speed Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3speed Tff7b72> T79c0ff0.1Tb4b4b4: Te6edf3speed_formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffSpeed [b]Tffd700{Te6edf3speedTffd700}Ta5d6ff Km/h[/b], heading [b]Tffd700{Te6edf3headingTffd700}Ta5d6ff°[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3speed_formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffObject is [b]stationary[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3speed_formatted_values Tff7b72= Tff7b72None
Te6edf3extra_formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffUncertainty [b]Tffd700{Te6edf3accuracyTffd700}Ta5d6ff meters[/b]Ta5d6ff"Tff7b72+Te6edf3updated_str
Te6edf3data Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3formatted_valuesTffd700}Ta5d6ff"Tb4b4b4}
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_interfaceTb4b4b4: Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffmap-marker-questionTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3extra_formatted_valuesTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3speed_formatted_values Tff7b72!= Tff7b72NoneTb4b4b4: Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspeedometerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3speed_formatted_valuesTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffdistanceTa5d6ff" Tff7b72in Te6edf3sTb4b4b4:
Tff7b72if Ta5d6ff"Ta5d6fforthodromicTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3od Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fforthodromicTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3od Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3od_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffGeodesic distance [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3odTb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffearthTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3od_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffeuclidianTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3ed Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffeuclidianTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3ed Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3ed_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffEuclidian distance [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3edTb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaxis-arrowTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3ed_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Ta5d6ff"Ta5d6ffverticalTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3vd Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdistanceTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffverticalTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3vd Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3vd Tff7b72< T79c0ff0Tb4b4b4:
Te6edf3relstr Tff7b72= Ta5d6ff"Ta5d6fflowerTa5d6ff"
Te6edf3vd Tff7b72= Tffa657absTb4b4b4(Te6edf3vdTb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3relstr Tff7b72= Ta5d6ff"Ta5d6ffgreaterTa5d6ff"
Te6edf3vd_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffAltitude is [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3vdTb4b4b4)Tffd700}Ta5d6ff[/b] Tffd700{Te6edf3relstrTffd700}Ta5d6ff than this deviceTa5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaltimeterTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3vd_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffangle_to_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3oath Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffangle_to_horizonTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3oath Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_selfTb4b4b4: Te6edf3oath_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffLocal horizon is at [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3oathTb4b4b4,T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff°[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3oath_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffObjectTa5d6ff'Ta5d6ffs horizon is at [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3oathTb4b4b4,T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff°[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffarrow-split-horizontalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3oath_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_self Tff7b72and Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3orh Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3orh Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3range_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3orhTb4b4b4)
Te6edf3rh_formatted_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffRadio horizon of [b]Tffd700{Te6edf3range_textTffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffradio-towerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3rh_formatted_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffazaltTa5d6ff" Tff7b72in Te6edf3s Tff7b72and Ta5d6ff"Ta5d6fflocal_angle_to_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3lath Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fflocal_angle_to_horizonTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3lath Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3lath_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffLocal horizon is at [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3lathTb4b4b4,T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff°[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffalign-vertical-distributeTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3lath_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffazaltTa5d6ff" Tff7b72in Te6edf3sTb4b4b4:
Te6edf3azalt_formatted_text Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffazimuthTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3az Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffazimuthTa5d6ff"Tb4b4b4]
Te6edf3az_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffAzimuth [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3azTb4b4b4,T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff°[/b]Ta5d6ff"
Te6edf3azalt_formatted_text Tff7b72+Tff7b72= Te6edf3az_text
Tff7b72if Ta5d6ff"Ta5d6ffaltitudeTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3al Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaltitudeTa5d6ff"Tb4b4b4]
Te6edf3al_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffaltitude [b]Tffd700{Tffa657roundTb4b4b4(Te6edf3alTb4b4b4,T79c0ff3Tb4b4b4)Tffd700}Ta5d6ff°[/b]Ta5d6ff"
Tff7b72if Tffa657lenTb4b4b4(Te6edf3azalt_formatted_textTb4b4b4) Tff7b72!= T79c0ff0Tb4b4b4: Te6edf3azalt_formatted_text Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"
Te6edf3azalt_formatted_text Tff7b72+Tff7b72= Te6edf3al_text

Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcompass-roseTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3azalt_formatted_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffabove_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3astr Tff7b72= Ta5d6ff"Ta5d6ffaboveTa5d6ff" Tff7b72if Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffabove_horizonTa5d6ff"Tb4b4b4] Tff7b72== Tff7b72True Tff7b72else Ta5d6ff"Ta5d6ffbelowTa5d6ff"
Te6edf3dstr Tff7b72= Tffa657strTb4b4b4(Tffa657roundTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffazaltTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffaltitude_deltaTa5d6ff"Tb4b4b4]Tb4b4b4, T79c0ff3Tb4b4b4)Tb4b4b4)
Te6edf3ah_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffObject is [b]Tffd700{Te6edf3astrTffd700}Ta5d6ff[/b] the horizon (Δ = Tffd700{Te6edf3dstrTffd700}Ta5d6ff°)Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffangle-acuteTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3ah_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_self Tff7b72and Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3orh Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3orh Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3range_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3orhTb4b4b4)
Te6edf3rh_formatted_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffObjectTa5d6ff'Ta5d6ffs radio horizon is [b]Tffd700{Te6edf3range_textTffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffradio-towerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3rh_formatted_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff" Tff7b72in Te6edf3sTb4b4b4:
Te6edf3rh_icon Tff7b72= Ta5d6ff"Ta5d6ffcircle-outlineTa5d6ff"
Te6edf3crange_text Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettydistanceTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffcombined_rangeTa5d6ff"Tb4b4b4]Tb4b4b4)
Tff7b72if Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffradio_horizonTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwithin_rangeTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3rh_formatted_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff[b]Within[/b] shared radio horizon of [b]Tffd700{Te6edf3crange_textTffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3rh_icon Tff7b72= Ta5d6ff"Ta5d6ffset-noneTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3rh_formatted_text Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff[b]Outside[/b] shared radio horizon of [b]Tffd700{Te6edf3crange_textTffd700}Ta5d6ff[/b]Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3rh_iconTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Te6edf3rh_formatted_textTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72def Td2a8ffselectTb4b4b4(Te6edf3eTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3geo_uri Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffgeo:Tffd700{Te6edf3latTffd700}Ta5d6ff,Tffd700{Te6edf3lonTffd700}Ta5d6ff"
Tff7b72def Td2a8ffljTb4b4b4(Tb4b4b4)Tb4b4b4: Te6edf3webbrowserTff7b72.Td2a8ffopenTb4b4b4(Te6edf3geo_uriTb4b4b4)
Te6edf3threadingTff7b72.Td2a8ffThreadTb4b4b4(Te6edf3targetTff7b72=Te6edf3ljTb4b4b4, Te6edf3daemonTff7b72=Tff7b72TrueTb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)
Te6edf3release_function Tff7b72= Te6edf3select
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffReticulum TransportTa5d6ff"Tb4b4b4:
Te6edf3d Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]
Te6edf3te Tff7b72= Ta5d6ff"Ta5d6ffenabledTa5d6ff" Tff7b72if Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6fftransport_enabledTa5d6ff"Tb4b4b4] Tff7b72else Ta5d6ff"Ta5d6ffdisabledTa5d6ff"
Te6edf3ifc Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffinterface_countTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3lnkc Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6fflink_countTa5d6ff"Tb4b4b4]
Te6edf3upt Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6fftransport_uptimeTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3mem Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffmemory_usedTa5d6ff"Tb4b4b4]
Te6edf3rxb Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6fftraffic_rxbTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3txb Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6fftraffic_txbTa5d6ff"Tb4b4b4]
Te6edf3rxs Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffspeed_rxTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3txs Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffspeed_txTa5d6ff"Tb4b4b4]
Te6edf3rxsi Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffspeed_rx_instTa5d6ff"Tb4b4b4]Tb4b4b4; Te6edf3txsi Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffspeed_tx_instTa5d6ff"Tb4b4b4]
Te6edf3pthc Tff7b72= Te6edf3dTb4b4b4[Ta5d6ff"Ta5d6ffpath_countTa5d6ff"Tb4b4b4]
Te6edf3mem_str Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff, using [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3memTb4b4b4)Tffd700}Ta5d6ff[/b] RAMTa5d6ff" Tff7b72if Te6edf3mem Tff7b72else Ta5d6ff"Ta5d6ff"

Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffReticulum Transport [b]Tffd700{Te6edf3teTffd700}Ta5d6ff[/b] with [b]Tffd700{Te6edf3ifcTffd700}Ta5d6ff[/b] interfaceTffd700{Ta5d6ff'Ta5d6ffsTa5d6ff' Tff7b72if Te6edf3ifc Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff"
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffroutesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ff[b]Tffd700{Te6edf3pthcTffd700}Ta5d6ff[/b] destinationTffd700{Ta5d6ff'Ta5d6ffsTa5d6ff' Tff7b72if Te6edf3pthc Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff reachable, [b]Tffd700{Te6edf3lnkcTffd700}Ta5d6ff[/b] active linkTffd700{Ta5d6ff'Ta5d6ffsTa5d6ff' Tff7b72if Te6edf3lnkc Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3uptTb4b4b4: Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffclock-digitalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffTransport up for [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Te6edf3uptTb4b4b4, Te6edf3compactTff7b72=Tff7b72TrueTb4b4b4)Tffd700}Ta5d6ff[/b]Tffd700{Te6edf3mem_strTffd700}Ta5d6ff"Tb4b4b4}Tb4b4b4)
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffspeedometerTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffThroughput [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3rxsTb4b4b4)Tffd700}Ta5d6ff[/b] in, [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3txsTb4b4b4)Tffd700}Ta5d6ff[/b] outTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffcube-sendTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffTraffic [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3rxbTb4b4b4)Tffd700}Ta5d6ff[/b] in, [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3txbTb4b4b4)Tffd700}Ta5d6ff[/b] outTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffConnection MapTa5d6ff"Tb4b4b4:
Te6edf3mc Tff7b72= T79c0ff0Tb4b4b4; Te6edf3pc Tff7b72= T79c0ff0
Tff7b72if Ta5d6ff"Ta5d6ffmapsTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4:
Tff7b72for Te6edf3mn Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmapsTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3mc Tff7b72+Tff7b72= T79c0ff1Tb4b4b4; Te6edf3pc Tff7b72+Tff7b72= Tffa657lenTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffmapsTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3mnTb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpointsTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3ms Tff7b72= Ta5d6ff"Ta5d6ffsTa5d6ff" Tff7b72if Te6edf3mc Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ff"Tb4b4b4; Te6edf3ps Tff7b72= Ta5d6ff"Ta5d6ffsTa5d6ff" Tff7b72if Te6edf3pc Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ff"
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff[b]Tffd700{Te6edf3mcTffd700}Ta5d6ff[/b] connection mapTffd700{Te6edf3msTffd700}Ta5d6ff, [b]Tffd700{Te6edf3pcTffd700}Ta5d6ff[/b] pointTffd700{Te6edf3psTffd700}Ta5d6ff"

Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffConnectable InterfacesTa5d6ff"Tb4b4b4:
Te6edf3ic Tff7b72= Tffa657lenTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4) Tff7b72if Ta5d6ff"Ta5d6ffinterfacesTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4] Tff7b72else T79c0ff0
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffHas [b]Tffd700{Te6edf3icTffd700}Ta5d6ff[/b] connectable interfaceTffd700{Ta5d6ff'Ta5d6ffsTa5d6ff' Tff7b72if Te6edf3ic Tff7b72!= T79c0ff1 Tff7b72else Ta5d6ff'Ta5d6ff'Tffd700}Ta5d6ff"
Tff7b72if Ta5d6ff"Ta5d6ffinterfacesTa5d6ff" Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4] Tff7b72and Tffa657lenTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4)Tb4b4b4:
Tff7b72for Te6edf3n Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3ife Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffinterfacesTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3nTb4b4b4]
Te6edf3ift Tff7b72= Te6edf3ifeTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]
Tff7b72if Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6ffaccess-point-networkTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffWeaveInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6ffaccess-pointTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6ffradio-towerTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6ffwanTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6fflan-connectTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6fflock-patternTa5d6ff"
Tff7b72elseTb4b4b4: Te6edf3ifi Tff7b72= Ta5d6ff"Ta5d6fftransit-connection-variantTa5d6ff"
Tff7b72if Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffRNodeInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff at [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6fffrequencyTa5d6ff'Tb4b4b4]Tb4b4b4)Tffd700}Ta5d6ff[/b], BW [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffbandwidthTa5d6ff'Tb4b4b4]Tb4b4b4)Tffd700}Ta5d6ff[/b], CR [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffcodingrateTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b], SF [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffspreadingfactorTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffWeaveInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff on channel [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffchannelTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b], BW [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffbandwidthTa5d6ff'Tb4b4b4]Tb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffKISSInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff at [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyfrequencyTb4b4b4(Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6fffrequencyTa5d6ff'Tb4b4b4]Tb4b4b4)Tffd700}Ta5d6ff[/b], with [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffmodulationTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b] modulationTa5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffBackboneInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff on [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffreachable_onTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff:Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffportTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffTCPServerInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff on [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffreachable_onTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff:Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffportTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elif Te6edf3ift Tff7b72== Ta5d6ff"Ta5d6ffI2PInterfaceTa5d6ff"Tb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff on [b]Tffd700{Te6edf3ifeTb4b4b4[Ta5d6ff'Ta5d6ffreachable_onTa5d6ff'Tb4b4b4]Tffd700}Ta5d6ff[/b]Ta5d6ff"
Tff7b72elseTb4b4b4: Te6edf3ifc Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff"

Te6edf3discovery_hash Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8fffull_hashTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTff7b72+Te6edf3nTff7b72.Td2a8ffencodeTb4b4b4(Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3ifts Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8fflatest_timestamp
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffcurrent_appearanceTb4b4b4: Te6edf3if_appearance Tff7b72= Tff7b72None
Tff7b72elseTb4b4b4:
Te6edf3if_appearance Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffiface_appearanceTb4b4b4(Te6edf3ifeTb4b4b4[Ta5d6ff"Ta5d6fftypeTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3if_appearanceTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffcurrent_appearanceTb4b4b4[T79c0ff1Tb4b4b4]
Te6edf3if_appearanceTb4b4b4[T79c0ff2Tb4b4b4] Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffcurrent_appearanceTb4b4b4[T79c0ff2Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8fftelemetry_iface_from_ifeTb4b4b4(Te6edf3ifeTb4b4b4, Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4, Te6edf3iftsTff7b72=Te6edf3iftsTb4b4b4, Te6edf3appearanceTff7b72=Te6edf3if_appearanceTb4b4b4)
Te6edf3extra_entriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3ifiTb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3nTffd700}Tffd700{Te6edf3ifcTffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3interface_action_factoryTb4b4b4(Te6edf3discovery_hashTb4b4b4)Tb4b4b4}Tb4b4b4)
Tff7b72elif Te6edf3name Tff7b72== Ta5d6ff"Ta5d6ffLXMF PropagationTa5d6ff"Tb4b4b4:
Te6edf3tp Tff7b72= Tffa657strTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6fftotal_peersTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3ap Tff7b72= Tffa657strTb4b4b4(Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffactive_peersTa5d6ff"Tb4b4b4]Tb4b4b4)
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ffPeered with [b]Tffd700{Te6edf3tpTffd700}Ta5d6ff[/b] LXMF Propagation Nodes, [b]Tffd700{Te6edf3apTffd700}Ta5d6ff[/b] availableTa5d6ff"
Tff7b72elseTb4b4b4:
Te6edf3formatted_values Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3nameTffd700}Ta5d6ff"
Tff7b72for Te6edf3vn Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3v Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffvaluesTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3vnTb4b4b4]
Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff [b]Tffd700{Te6edf3vTffd700}Ta5d6ff Tffd700{Te6edf3vnTffd700}Ta5d6ff[/b]Ta5d6ff"

Te6edf3dt Tff7b72= Te6edf3vn
Tff7b72if Ta5d6ff"Ta5d6ffdeltasTa5d6ff" Tff7b72in Te6edf3s Tff7b72and Te6edf3dt Tff7b72in Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4] Tff7b72and Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4] Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3d Tff7b72= Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6ffdeltasTa5d6ff"Tb4b4b4]Tb4b4b4[Te6edf3dtTb4b4b4]
Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6fffTa5d6ff"Ta5d6ff (Δ = Tffd700{Te6edf3dTffd700}Ta5d6ff Tffd700{Te6edf3vnTffd700}Ta5d6ff)Ta5d6ff"

Te6edf3formatted_values Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff, Ta5d6ff"
Te6edf3formatted_values Tff7b72= Te6edf3formatted_valuesTb4b4b4[Tb4b4b4:Tff7b72-T79c0ff2Tb4b4b4]
Te6edf3data Tff7b72= Tff7b72None
Tff7b72if Te6edf3formatted_values Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3release_functionTb4b4b4: Te6edf3data Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3formatted_valuesTffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3release_functionTb4b4b4}
Tff7b72elseTb4b4b4: Te6edf3data Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Te6edf3sTb4b4b4[Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4]Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Tffd700{Te6edf3formatted_valuesTffd700}Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}

Tff7b72if Te6edf3data Tff7b72!= Tff7b72NoneTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3dataTb4b4b4)
Tff7b72for Te6edf3extra Tff7b72in Te6edf3extra_entriesTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Te6edf3extraTb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffAn error ocurred while displaying telemetry for objectTa5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6ff"Ta5d6ffThe contained exception was: Ta5d6ff"Tff7b72+Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_interfaceTb4b4b4:
Te6edf3ratchet_id Tff7b72= Te6edf3RNSTff7b72.Td2a8ffIdentityTff7b72.Td2a8ffcurrent_ratchet_idTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Tff7b72if Te6edf3ratchet_idTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflock-check-outlineTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffUsing ratchet [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyhexrepTb4b4b4(Te6edf3ratchet_idTb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72tryTb4b4b4:
Te6edf3nh Tff7b72= Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffhops_toTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3nhi Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffreticulumTff7b72.Td2a8ffget_next_hop_if_nameTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Tff7b72if Te6edf3nhi Tff7b72and Te6edf3nhi Tff7b72!= Ta5d6ff"Ta5d6ffNoneTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffroutesTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffCurrent path on [b]Tffd700{Te6edf3nhiTffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72if Te6edf3nh Tff7b72!= Te6edf3RNSTff7b72.Td2a8ffTransportTff7b72.Td2a8ffPATHFINDER_MTb4b4b4:
Te6edf3hs Tff7b72= Ta5d6ff"Ta5d6ffhopTa5d6ff" Tff7b72if Te6edf3nh Tff7b72== T79c0ff1 Tff7b72else Ta5d6ff"Ta5d6ffhopsTa5d6ff"
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffatom-variantTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffNetwork distance is [b]Tffd700{Te6edf3nhTffd700}Ta5d6ff Tffd700{Te6edf3hsTffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72tryTb4b4b4:
Te6edf3ler Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffget_destination_establishment_rateTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3mtu Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffget_destination_mtuTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4) Tff7b72or Te6edf3RNSTff7b72.Td2a8ffReticulumTff7b72.Td2a8ffMTU
Te6edf3edr Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffget_destination_edrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3lmd Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffget_destination_lmdTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Tff7b72if Te6edf3lerTb4b4b4:
Te6edf3lers Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3lerTb4b4b4, Ta5d6ff"Ta5d6ffbTa5d6ff"Tb4b4b4)
Te6edf3mtus Tff7b72= Te6edf3RNSTff7b72.Td2a8ffprettysizeTb4b4b4(Te6edf3mtuTb4b4b4)
Te6edf3edrs Tff7b72= Ta5d6fffTa5d6ff"Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettyspeedTb4b4b4(Te6edf3edrTb4b4b4)Tffd700}Ta5d6ff" Tff7b72if Te6edf3edr Tff7b72!= Tff7b72None Tff7b72else Ta5d6ff"Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflock-check-outlineTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffLink established, LER is [b]Tffd700{Te6edf3lersTffd700}Ta5d6ff[/b], MTU is [b]Tffd700{Te6edf3mtusTffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3edrTb4b4b4: Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffapproximately-equalTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffExpected data rate is [b]Tffd700{Te6edf3edrsTffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3lmd Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Te6edf3lmd Tff7b72in Te6edf3RNSTff7b72.Td2a8ffLinkTff7b72.Td2a8ffMODE_DESCRIPTIONSTb4b4b4: Te6edf3lmds Tff7b72= Te6edf3RNSTff7b72.Td2a8ffLinkTff7b72.Td2a8ffMODE_DESCRIPTIONSTb4b4b4[Te6edf3lmdTb4b4b4]
Tff7b72elseTb4b4b4: Te6edf3lmds Tff7b72= Ta5d6ff"Ta5d6ffunknownTa5d6ff"
Tff7b72if Te6edf3lmds Tff7b72== Ta5d6ff"Ta5d6ffAES_128_CBCTa5d6ff"Tb4b4b4: Te6edf3lmds Tff7b72= Ta5d6ff"Ta5d6ffX25519/AES128Ta5d6ff"
Tff7b72elif Te6edf3lmds Tff7b72== Ta5d6ff"Ta5d6ffAES_256_CBCTa5d6ff"Tb4b4b4: Te6edf3lmds Tff7b72= Ta5d6ff"Ta5d6ffX25519/AES256Ta5d6ff"
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fflink-lockTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffLink mode is [b]Tffd700{Te6edf3lmdsTffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72tryTb4b4b4:
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffviewing_interfaceTb4b4b4:
Te6edf3ticket_expires Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffget_outbound_ticket_expiryTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3stamp_cost Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffsidebandTff7b72.Td2a8ffmessage_routerTff7b72.Td2a8ffget_outbound_stamp_costTb4b4b4(Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffobject_hashTb4b4b4)
Te6edf3t_str Tff7b72= Ta5d6ff"Ta5d6ff"
Tff7b72if Te6edf3ticket_expiresTb4b4b4:
Te6edf3t_str Tff7b72= Ta5d6ff"Ta5d6ff, but have ticketTa5d6ff"
Tff7b72if Te6edf3stamp_costTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpostage-stampTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffRequired stamp cost [b]Tffd700{Te6edf3stamp_costTffd700}Ta5d6ff[/b]Ta5d6ff"Tff7b72+Te6edf3t_strTb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffpostage-stampTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffNo required stamp costTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)
Tff7b72if Te6edf3ticket_expiresTb4b4b4:
Te6edf3valid_for Tff7b72= Te6edf3ticket_expires Tff7b72- Te6edf3timeTff7b72.Td2a8fftimeTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffticket-confirmationTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffDelivery ticket valid for [b]Tffd700{Te6edf3RNSTff7b72.Td2a8ffprettytimeTb4b4b4(Te6edf3valid_forTb4b4b4)Tffd700}Ta5d6ff[/b]Ta5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffon_releaseTa5d6ff"Tb4b4b4: Te6edf3pass_jobTb4b4b4}Tb4b4b4)

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4: Te6edf3RNSTff7b72.Td2a8fftrace_exceptionTb4b4b4(Te6edf3eTb4b4b4)

Tff7b72if Tffa657lenTb4b4b4(Tff7b72selfTff7b72.Td2a8ffentriesTb4b4b4) Tff7b72== T79c0ff0Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffentriesTff7b72.Td2a8ffappendTb4b4b4(Tb4b4b4{Ta5d6ff"Ta5d6fficonTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6fftimeline-question-outlineTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6fftextTa5d6ff"Tb4b4b4: Ta5d6fffTa5d6ff"Ta5d6ffNo telemetry available for this deviceTa5d6ff"Tb4b4b4}Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffdata Tff7b72= Tff7b72selfTff7b72.Td2a8ffentries

Tff7b72except Tf85149Exception Tff7b72as Te6edf3eTb4b4b4:
Tff7b72import T7ee787traceback
Te6edf3exception_info Tff7b72= Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3tracebackTff7b72.Td2a8ffTracebackExceptionTff7b72.Td2a8fffrom_exceptionTb4b4b4(Te6edf3eTb4b4b4)Tff7b72.Td2a8ffformatTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffAn Tffd700{Tffa657strTb4b4b4(Tffa657typeTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff occurred while updating service telemetry: Tffd700{Tffa657strTb4b4b4(Te6edf3eTb4b4b4)Tffd700}Ta5d6ff"Tb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)
Te6edf3RNSTff7b72.Td2a8fflogTb4b4b4(Te6edf3exception_infoTb4b4b4, Te6edf3RNSTff7b72.Td2a8ffLOG_ERRORTb4b4b4)


Te6edf3layout_object_details Tff7b72= Ta5d6ff"""
Ta5d6ff#:import MDLabel kivymd.uix.label.MDLabel
Ta5d6ff#:import OneLineIconListItem kivymd.uix.list.OneLineIconListItem
Ta5d6ff#:import Button kivy.uix.button.Button

Ta5d6ff<ODView>
Ta5d6ff IconLeftWidget:
Ta5d6ff icon: root.icon

Ta5d6ff<RVDetails>:
Ta5d6ff viewclass: Ta5d6ff"Ta5d6ffODViewTa5d6ff"
Ta5d6ff effect_cls: Ta5d6ff"Ta5d6ffScrollEffectTa5d6ff"

Ta5d6ff RecycleBoxLayout:
Ta5d6ff default_size: None, dp(50)
Ta5d6ff default_size_hint: 1, None
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ffMDScreen:
Ta5d6ff name: Ta5d6ff"Ta5d6ffobject_details_screenTa5d6ff"
Ta5d6ff
Ta5d6ff BoxLayout:
Ta5d6ff id: details_screen_container
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"

Ta5d6ff MDTopAppBar:
Ta5d6ff id: details_bar
Ta5d6ff title: Ta5d6ff"Ta5d6ffDetailsTa5d6ff"
Ta5d6ff anchor_title: Ta5d6ff"Ta5d6ffleftTa5d6ff"
Ta5d6ff elevation: 0
Ta5d6ff left_action_items:
Ta5d6ff [[Ta5d6ff'Ta5d6ffmenuTa5d6ff'Ta5d6ff, lambda x: root.app.nav_drawer.set_state(Ta5d6ff"Ta5d6ffopenTa5d6ff"Ta5d6ff)]]
Ta5d6ff right_action_items:
Ta5d6ff [
Ta5d6ff [Ta5d6ff'Ta5d6ffmap-searchTa5d6ff'Ta5d6ff, lambda x: root.app.peer_show_location_action(root.delegate)],
Ta5d6ff [Ta5d6ff'Ta5d6ffrefreshTa5d6ff'Ta5d6ff, lambda x: root.delegate.reload_telemetry()],
Ta5d6ff [Ta5d6ff'Ta5d6fftrash-can-outlineTa5d6ff'Ta5d6ff, lambda x: root.delegate.delete_telemetry_action()],
Ta5d6ff [Ta5d6ff'Ta5d6ffcloseTa5d6ff'Ta5d6ff, lambda x: root.delegate.close_action()],
Ta5d6ff ]

Ta5d6ff MDBoxLayout:
Ta5d6ff id: object_header
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: dp(24)

Ta5d6ff MDIconButton:
Ta5d6ff id: object_appearance
Ta5d6ff icon: Ta5d6ff"Ta5d6ffaccount-questionTa5d6ff"
Ta5d6ff icon_color: [0,0,0,1]
Ta5d6ff md_bg_color: [1,1,1,1]
Ta5d6ff theme_icon_color: Ta5d6ff"Ta5d6ffCustomTa5d6ff"
Ta5d6ff icon_size: dp(32)
Ta5d6ff on_release: root.app.converse_from_telemetry()

Ta5d6ff MDLabel:
Ta5d6ff id: name_label
Ta5d6ff markup: True
Ta5d6ff text: Ta5d6ff"Ta5d6ffObject NameTa5d6ff"
Ta5d6ff font_style: Ta5d6ff"Ta5d6ffH6Ta5d6ff"

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(24), dp(0), dp(24), dp(24)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: telemetry_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffcontent-copyTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffCopy TelemetryTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.copy_telemetry(self)
Ta5d6ff disabled: False

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: coordinates_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffmap-marker-outlineTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffCopy CoordinatesTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.copy_coordinates(self)
Ta5d6ff disabled: False
Ta5d6ff
Ta5d6ff MDSeparator:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff height: dp(1)

Ta5d6ff MDBoxLayout:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffverticalTa5d6ff"
Ta5d6ff id: object_details_container
Ta5d6ff
Ta5d6ff MDSeparator:
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff height: dp(1)

Ta5d6ff MDBoxLayout:
Ta5d6ff id: telemetry_request_buttons
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(24), dp(24), dp(24), dp(24)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: send_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffupload-lockTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffSend UpdateTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.send_update()
Ta5d6ff disabled: False

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: request_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffarrow-down-bold-hexagon-outlineTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffRequest UpdateTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.request_update()
Ta5d6ff disabled: False

Ta5d6ff MDBoxLayout:
Ta5d6ff id: tracking_buttons
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: dp(16)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(24), dp(0), dp(24), dp(24)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: track_button
Ta5d6ff icon: Ta5d6ff"Ta5d6ffcrosshairs-gpsTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffStart Live TrackingTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.live_tracking(self)
Ta5d6ff disabled: False



Ta5d6ff MDBoxLayout:
Ta5d6ff id: interface_buttons
Ta5d6ff orientation: Ta5d6ff"Ta5d6ffhorizontalTa5d6ff"
Ta5d6ff spacing: dp(24)
Ta5d6ff size_hint_y: None
Ta5d6ff height: self.minimum_height
Ta5d6ff padding: [dp(24), dp(24), dp(24), dp(24)]

Ta5d6ff MDRectangleFlatIconButton:
Ta5d6ff id: use_interface_button
Ta5d6ff icon: Ta5d6ff"Ta5d6fflan-connectTa5d6ff"
Ta5d6ff text: Ta5d6ff"Ta5d6ffUse InterfaceTa5d6ff"
Ta5d6ff padding: [dp(0), dp(14), dp(0), dp(14)]
Ta5d6ff icon_size: dp(24)
Ta5d6ff font_size: dp(16)
Ta5d6ff size_hint: [1.0, None]
Ta5d6ff on_release: root.delegate.use_interface_action()
Ta5d6ff disabled: False
Ta5d6ff
Ta5d6ff"""


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────